package com.umariana.ClinicaVeterinaria.Persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.umariana.ClinicaVeterinaria.mundo.Mascotas;



public class MascotaDao extends Database 
{

	/**
	 * constructor de la clase MascotaDao
	 */
	public MascotaDao() 
	{
		super();
		
	}
	
	
	/**
	 * agrega una mascota que ingresa como parametro a la base de datos
	 * @param m mascota que se desea agregar
	 * @throws SQLException 
	 * @throws ClassNotFoundException 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 */
	public void insertMascota(Mascotas m,String pidentifiacion) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException
	{
		Mascotas mascota = m;
		RazasDao r = new RazasDao();
		String me = r.darIdesEspecieRaza(mascota.getRaza(),mascota.getEspecie());
		String[] num = me.split("#");
		String a= num[0];
		String b= num[1];
		
		conectar();
		Connection conexion = getConexion();
		PreparedStatement comando = conexion.prepareStatement("call AgregarMascota(?,?,?,?,?)");
	
		comando.setInt(1, Integer.parseInt(pidentifiacion));
		comando.setInt(2, mascota.getEdad());
		comando.setInt(3, Integer.parseInt(a));
		comando.setString(4, mascota.getNombre());
		comando.setInt(5, Integer.parseInt(b));
		
		comando.executeUpdate();
		
		comando.close();
		desconectar();
		
		
		
	}

	/**
	 * modifica una mascota que ingresa como parametro a la base de datos
	 * @param  m mascota  que se desea agregar
	 */
	public void updatemascota(Mascotas m)
	{
		
	}
	
	/**
	 * elimina una mascota que ingresa como parametro a la base de datos
	 * @param  m mascota  que se desea agregar
	 */
	public void deleteMascota(Mascotas m)
	{
		
	}
	
	/**
	 * retorna la mascota a buscar
	 * @param m mascota a buscar
	 * @return la lista con la mascota
	 */
	public ArrayList<Mascotas> selectrMascota (Mascotas m)
	{
		return null;
	}
	
	/**
	 * retorn todos las Mascotas
	 * @return lista de mascotas
	 * @throws SQLException 
	 * @throws ClassNotFoundException 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 */
	public ArrayList<Mascotas> selectAllMascotas(String pIdentifiacion) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException
	{
		ArrayList<Mascotas> listaDeMascotas = new ArrayList<Mascotas>();
		conectar();
		Connection conexion = getConexion();
		PreparedStatement comando = conexion.prepareStatement("call darMascotasPropietario(?)");
		comando.setInt(1, Integer.parseInt(pIdentifiacion));
		ResultSet rs = comando.executeQuery();
		while(rs.next())
		{
			Mascotas m = new Mascotas(rs.getString(1),rs.getInt(2), rs.getString(4), rs.getString(3));
			listaDeMascotas.add(m);
		}
		rs.close();
		comando.close();
		desconectar();
		
		return listaDeMascotas;
		
		
	}

	public int darIdMascota(String nombreMascota) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException
	{
		int rta = 0;
		conectar();
		Connection conexion = getConexion();
		PreparedStatement comando = conexion.prepareStatement("call darIdMascota(?)");
		comando.setString(1, nombreMascota);
		ResultSet rs = comando.executeQuery();
		while(rs.next())
		{
			rta = rs.getInt(1);
		}
		rs.close();
		comando.close();
		desconectar();
		return rta;
	}

	
	
}
